import os
from flask import Flask, send_from_directory, render_template, abort, request
from jinja2 import FileSystemLoader

app = Flask(__name__)

# 配置模板加载器 - 同时支持 dist 和 templates 目录
template_dirs = ['dist', 'templates']
app.jinja_loader = FileSystemLoader(template_dirs)

# 设置静态文件夹
app.static_folder = 'dist'
app.static_url_path = ''

@app.route('/')
def index():
    """渲染 dist/index.html 并传递变量"""
    try:
        # 获取错误信息（示例）
        error = request.args.get('error', '')
        # 直接从 dist 目录渲染 index.html
        return render_template('index.html', error=error)
    except:
        # 如果渲染失败，返回默认文件
        return send_from_directory('dist', 'index.html')

@app.route('/<path:req_path>')
def serve_static(req_path):
    """处理静态文件请求"""
    # 检查请求的是否是模板文件
    if req_path.endswith(('.html', '.htm')):
        try:
            # 尝试作为模板渲染
            return render_template(req_path)
        except:
            # 渲染失败则作为静态文件返回
            pass

    # 作为静态文件返回
    return send_from_directory('dist', req_path)


    if req_path.endswith(('.html', '.htm')):
        if id == None:
            work = "static/project2.sb3"
            return render_template(req_path,work=work)
        else:
            work = "/scratchwork/" + id
            return render_template(req_path,work=id)
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000, debug=True)